package com.ryder.petmatediarybackend.module.auth.service;

import com.ryder.petmatediarybackend.module.auth.dto.LoginDTO;
import com.ryder.petmatediarybackend.module.auth.dto.RefreshTokenDTO;
import com.ryder.petmatediarybackend.module.auth.dto.RegisterDTO;
import com.ryder.petmatediarybackend.module.auth.vo.LoginVO;
import com.ryder.petmatediarybackend.module.auth.vo.TokenVO;
import com.ryder.petmatediarybackend.module.auth.vo.UserVO;
import jakarta.servlet.http.HttpServletRequest;

/**
 * 描述: 认证服务接口
 *
 * @author Ryder
 * @version 1.0
 * @since 1.0
 * 更新日期: 2025/10/27
 */
public interface AuthService {

    /**
     * 用户注册
     */
    UserVO register(RegisterDTO dto);

    /**
     * 用户登录（双 Token 模式 + 用户信息 + 角色权限）
     */
    LoginVO login(LoginDTO dto, HttpServletRequest request);

    /**
     * 刷新 Access Token（使用 Refresh Token）
     */
    TokenVO refreshToken(RefreshTokenDTO dto);

    /**
     * 注销当前设备（不需要传参，Sa-Token 自动获取）
     */
    void logout();

    /**
     * 注销所有设备
     */
    void logoutAll();
}
